# encoding: utf-8
# module alembic.Abc
# from C:\Program Files\Python39\lib\site-packages\alembic.cp39-win_amd64.pyd
# by generator 1.147
# no doc

# imports
from typing import overload

import Boost.Python as __Boost_Python

from . import ChildList, IArchive, ICompoundProperty
from ..AbcCoreAbstract import MetaData, ObjectHeader


class IObject(__Boost_Python.instance):
    """ The IObject class as an object reader """

    def __bool__(self) -> bool: ...

    @overload
    def __init__(self, parent: IObject, name: str) -> None:
        """ Create an IObject with the given parent IObject and name """

    @overload
    def __init__(self) -> None:
        """ Create an empty IObject """

    def __reduce__(self, *args, **kwargs): ...  # real signature unknown

    def __str__(self) -> str: ...

    def getArchive(self) -> IArchive:
        """Return this object's archive"""

    @overload
    def getChild(self, index: int) -> IObject:
        """Return a child IObject with the given index"""

    @overload
    def getChild(self, name: str) -> IObject:
        """Return a child IObject with the given name"""

    @overload
    def getChildHeader(self, index: int) -> ObjectHeader:
        """ Return the header of a child IObject with the given index """

    @overload
    def getChildHeader(self, name: str) -> ObjectHeader:
        """ Return the header of a child IObject with the given name """

    def getChildrenHash(self) -> str:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return a string representation of the children hash for this object. Empty string if not found."""

    def getFullName(self) -> str:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the full name of this object. The full name is unique within the entire archive"""

    def getHeader(self) -> ObjectHeader:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the header which contains all the MetaData that was specified upon their creation"""

    def getMetaData(self) -> MetaData:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the MetaData of this object"""

    def getName(self) -> str:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the name of this object. The name is unique amongst their siblings"""

    def getNumChildren(self) -> int:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the number of child IObjects that this object has"""

    def getParent(self) -> IObject:
        """Return this object's parent

        If the object is the top level object, the IObject returned will be an empty Object
        """

    def getProperties(self) -> ICompoundProperty:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the single top-level ICompoundProperty"""

    def getPropertiesHash(self) -> str:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return a string representation of the properties hash for this object. Empty string if not found."""

    def instanceSourcePath(self) -> str:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return the instance source path that the instance points at. Empty string if not found."""

    @overload
    def isChildInstance(self, index: int) -> bool:
        """Return true if the child by index is an instance root object"""

    @overload
    def isChildInstance(self, name: str) -> bool:
        """Return true if the named child is an instance root object"""

    def isInstanceDescendant(self) -> bool:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return true if this IObject is an instanceRoot, or an ancestor of one"""

    def isInstanceRoot(self) -> bool:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Return true if this IObject is an instance root"""

    def reset(self) -> None:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Reset"""

    def valid(self) -> bool:  # real signature unknown; NOTE: unreliably restored from __doc__
        """Valid"""

    children: ChildList[IObject] = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default

    __instance_size__ = 128
